www.gusucode.com > matlab编程NSCT分解 图像融合 各个融合指标评价体系 分解源码程序 > matlab编程NSCT分解 图像融合 各个融合指标评价体系 分解源码程序/NSCT/atrousdec.m

    function y = atrousdec(x,fname,Nlevels);

%  ATROUSDEC - computes the 2-D atrous decomposition using symmetric extension.
%  y = atrousdec(x,fname,L)
%  INPUT: x image
%         fname    - can be any filter available in the function atrousfilters
%         N levels - number of decomposition levels
%  OUTPUT: y vector cell. the first entry is the lowpass images, the next entries 
%            are the highpass images from coarser to finer scales
%  EXAMPLE: y = atrousdecd(x,'9-7',4)
%
%  History
%   Created on May, 2004 by Arthur Cunha
%   Modified on Aug 2004 by A. C.
%   Modified on Oct 2004 by A. C.
%   SEE ALSO: ATROUSREC, ATROUSFILTERS


[h0,h1,g0,g1] = atrousfilters(fname); % Obtain pyramid filters (the filters must be zero-phase!)
y = cell(1,Nlevels+1);

% First Level

shift = [1, 1]; % delay compensation
y0 = conv2(symext(x,h0,shift),h0,'valid');
y1 = conv2(symext(x,h1,shift),h1,'valid');


% Remaining levels

y{Nlevels+1} = y1;
x  = y0;
I2 = eye(2);
for i=1:Nlevels-1
  shift = -2^(i-1)*[1,1] + 2; L=2^i;
  y0 = atrousc(symext(x,upsample2df(h0,i),shift),h0,I2 * L);
  y1 = atrousc(symext(x,upsample2df(h1,i),shift),h1,I2 * L);
  y{Nlevels-i+1} = y1;
  x=y0;
end
y{1}=x;